<!DOCTYPE html>
<html lang="ja">

<head>
  <meta charset="utf-8">
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <meta http-equiv="Content-Style-Type" content="text/css">
  <script src='../bbs.js'></script>

  <!-- Global site tag (gtag.js) - Google Analytics -->
  <script async src="https://www.googletagmanager.com/gtag/js?id=UA-120820034-1"></script>

  <link href="../bbs.css" type="text/css" rel="stylesheet">
  <link rel="shortcut icon" href="/favicon.ico">
  <title>画面がちらつく？ | サクラエディタ過去ログ</title>
</head>
<body>
<ul class="side">
        <a href="./" class="toindex">◀ANSI版開発トップへ</a>
        <li><div class="list-title">
    <span class="no">1226</span>
    <a class="thread-title" href="1226.html#1226">画面がちらつく？</a></div>
    <ul><li><div class="list-title">
    <span class="no">1227</span>
    <a class="thread-title" href="1226.html#1227">Re:画面がちらつく？</a></div>
    <ul><li><div class="list-title">
    <span class="no">1228</span>
    <a class="thread-title" href="1226.html#1228">Re2:画面がちらつく？</a></div>
    </li></ul></li><li><div class="list-title">
    <span class="no">1235</span>
    <a class="thread-title" href="1226.html#1235">Re:画面がちらつく？</a></div>
    <ul><li><div class="list-title">
    <span class="no">1237</span>
    <a class="thread-title" href="1226.html#1237">Re2:画面がちらつく？</a></div>
    <ul><li><div class="list-title">
    <span class="no">1241</span>
    <a class="thread-title" href="1226.html#1241">Re3:画面がちらつく？</a></div>
    <ul><li><div class="list-title">
    <span class="no">1253</span>
    <a class="thread-title" href="1226.html#1253">Re4:画面がちらつく？</a></div>
    <ul><li><div class="list-title">
    <span class="no">1256</span>
    <a class="thread-title" href="1226.html#1256">Re5:画面がちらつく？</a></div>
    </li><li><div class="list-title">
    <span class="no">1258</span>
    <a class="thread-title" href="1226.html#1258">Re4:画面がちらつく？</a></div>
    <ul><li><div class="list-title">
    <span class="no">1259</span>
    <a class="thread-title" href="1226.html#1259">Re4:画面がちらつく？</a></div>
    <ul><li><div class="list-title">
    <span class="no">1262</span>
    <a class="thread-title" href="1226.html#1262">Re5:画面がちらつく？</a></div>
    </li><li><div class="list-title">
    <span class="no">1264</span>
    <a class="thread-title" href="1226.html#1264">Re5:画面がちらつく？</a></div>
    </li><li><div class="list-title">
    <span class="no">1296</span>
    <a class="thread-title" href="1226.html#1296">Re4:画面がちらつく？</a></div>
    <ul><li><div class="list-title">
    <span class="no">1319</span>
    <a class="thread-title" href="1226.html#1319">Re4:画面がちらつく？</a></div>
    <ul><li><div class="list-title">
    <span class="no">1325</span>
    <a class="thread-title" href="1226.html#1325">Re5:画面がちらつく？</a></div>
    </li><li><div class="list-title">
    <span class="no">1327</span>
    <a class="thread-title" href="1226.html#1327">Re4:画面がちらつく？</a></div>
    <ul><li><div class="list-title">
    <span class="no">1329</span>
    <a class="thread-title" href="1226.html#1329">Re4:画面がちらつく？</a></div>
    <ul><li><div class="list-title">
    <span class="no">1331</span>
    <a class="thread-title" href="1226.html#1331">constとstatic</a></div>
    <ul><li><div class="list-title">
    <span class="no">1332</span>
    <a class="thread-title" href="1226.html#1332">Re:constとstatic</a></div>
    </li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li><li><div class="list-title">
    <span class="no">1263</span>
    <a class="thread-title" href="1226.html#1263">Re5:画面がちらつく？</a></div>
    <ul><li><div class="list-title">
    <span class="no">1271</span>
    <a class="thread-title" href="1226.html#1271">Re5:画面がちらつく？</a></div>
    <ul><li><div class="list-title">
    <span class="no">1274</span>
    <a class="thread-title" href="1226.html#1274">Re5:画面がちらつく？</a></div>
    <ul><li><div class="list-title">
    <span class="no">1275</span>
    <a class="thread-title" href="1226.html#1275">Re6:画面がちらつく？</a></div>
    </li><li><div class="list-title">
    <span class="no">1279</span>
    <a class="thread-title" href="1226.html#1279">Re5:画面がちらつく？</a></div>
    <ul><li><div class="list-title">
    <span class="no">1280</span>
    <a class="thread-title" href="1226.html#1280">Re6:画面がちらつく？</a></div>
    <ul><li><div class="list-title">
    <span class="no">1297</span>
    <a class="thread-title" href="1226.html#1297">Re6:画面がちらつく？</a></div>
    <ul><li><div class="list-title">
    <span class="no">1309</span>
    <a class="thread-title" href="1226.html#1309">Re7:画面がちらつく？</a></div>
    <ul><li><div class="list-title">
    <span class="no">1317</span>
    <a class="thread-title" href="1226.html#1317">Re7:画面がちらつく？</a></div>
    <ul><li><div class="list-title">
    <span class="no">1320</span>
    <a class="thread-title" href="1226.html#1320">Re8:画面がちらつく？</a></div>
    <ul><li><div class="list-title">
    <span class="no">1355</span>
    <a class="thread-title" href="1226.html#1355">Re9:画面がちらつく？</a></div>
    </li></ul></li></ul></li></ul></li><li><div class="list-title">
    <span class="no">1314</span>
    <a class="thread-title" href="1226.html#1314">Re7:画面がちらつく？</a></div>
    <ul><li><div class="list-title">
    <span class="no">1318</span>
    <a class="thread-title" href="1226.html#1318">Re7:画面がちらつく？</a></div>
    </li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li>
    </ul><ul class="main"><li><section><h1 id=1226>
    <span class="no">[1226]</span>
    <a class="thread-title" href="#1226">画面がちらつく？</a>
    <span class="author">げんた</span>
    <time datetime="2002-01-19T20:47:27">2002年01月19日 20:47</time></h1>
    <div class="body">ホームページを見ていたら「サクラエディタは画面がちらついて使い物にならない」と書かれているのを発見したんですが，この辺検証できる方いらっしゃいますか？<br></div></section>
    <ul><li><section><h1 id=1227>
    <span class="no">[1227]</span>
    <a class="thread-title" href="#1227">Re:画面がちらつく？</a>
    <span class="author">やざき</span>
    <time datetime="2002-01-19T21:04:53">2002年01月19日 21:04</time></h1>
    <div class="body">▼ げんたさん<br>&gt; ホームページを見ていたら「サクラエディタは画面がちらついて使い物にならない」と書かれているのを発見したんですが，この辺検証できる方いらっしゃいますか？<br><br>ルーラーと、カーソル行のアンダーラインはちらつきます。<br>また、aaaaaと100個ぐらいつらねてコピーし、同じ行に貼り付けていくと、50000文字くらい書いたところでちらつきが目立ちます。<br><br>そんなところでよろしいでしょうか？</div></section>
    <ul><li><section><h1 id=1228>
    <span class="no">[1228]</span>
    <a class="thread-title" href="#1228">Re2:画面がちらつく？</a>
    <span class="author">げんた</span>
    <time datetime="2002-01-19T22:15:02">2002年01月19日 22:15</time></h1>
    <div class="body">▼ やざきさん<br>&gt; ルーラーと、カーソル行のアンダーラインはちらつきます。<br>こちらだけでも何とかならないでしょうかねぇ。<br><br>&gt; また、aaaaaと100個ぐらいつらねてコピーし、同じ行に貼り付けていくと、50000文字くらい書いたところでちらつきが目立ちます。<br>こちらはテキスト処理を見直さないと難しいかもしれませんね。</div></section>
    </li></ul></li><li><section><h1 id=1235>
    <span class="no">[1235]</span>
    <a class="thread-title" href="#1235">Re:画面がちらつく？</a>
    <span class="author">hor</span>
    <time datetime="2002-01-20T15:43:35">2002年01月20日 15:43</time></h1>
    <div class="body">▼ げんたさん<br>&gt; ホームページを見ていたら「サクラエディタは画面がちらついて使い物にならない」<br>&gt; と書かれているのを発見したんですが，この辺検証できる方いらっしゃいますか？<br><br>「ちらつき」ではありませんが、描画の遅さに「使い物にならん」と感じたことがあります。<br><br>マシンスペックによっては再現しないかもしれませんが、<br>  ・折り返し桁=10240<br>  ・URLの色分け=On<br>  ・10240を超える文字数の行が画面内にある &amp;&amp; 全角文字がいっぱい<br>の状態で「→」キーを押し続けて横スクロ－ルさせたりすると悲しいことになります。<br><br>URLの色分けをOffにするとかなりマシになるので、この状態でいつも使っていますが、<br>IsURLやDispLineNewあたりのロジックを見直せばもっと快適になるような気がします。</div></section>
    <ul><li><section><h1 id=1237>
    <span class="no">[1237]</span>
    <a class="thread-title" href="#1237">Re2:画面がちらつく？</a>
    <span class="author">げんた</span>
    <time datetime="2002-01-20T15:58:30">2002年01月20日 15:58</time></h1>
    <div class="body">▼ horさん<br>&gt; マシンスペックによっては再現しないかもしれませんが<br>どのくらいのマシンを使っていますか？<br><br>このエディタも、nakataniさんが開発を始めたころはi486のPC-9821を使っていたので遅いマシンでも動くように考慮されていたんですが、私がその後使っていたのはCeleron 300MHz程度で現在はCeleron700前後のマシンを使っていますので性能改善という意識がほとんどなかったのも事実ではあります。<br></div></section>
    <ul><li><section><h1 id=1241>
    <span class="no">[1241]</span>
    <a class="thread-title" href="#1241">Re3:画面がちらつく？</a>
    <span class="author">hor</span>
    <time datetime="2002-01-20T17:32:47">2002年01月20日 17:32</time></h1>
    <div class="body">▼ げんたさん<br>&gt; &gt; マシンスペックによっては再現しないかもしれませんが<br>&gt; どのくらいのマシンを使っていますか？<br><br>・・・ 再現しませんか？<br><br>Pentium Pro 200MHz / 163MB RAM じゃぁ性能低すぎ？</div></section>
    <ul><li><section><h1 id=1253>
    <span class="no">[1253]</span>
    <a class="thread-title" href="#1253">Re4:画面がちらつく？</a>
    <span class="author">げんた</span>
    <time datetime="2002-01-21T09:45:25">2002年01月21日 09:45</time></h1>
    <div class="body">&gt;・・・ 再現しませんか？<br>3万文字くらいの行を作ったら全然使い物にならない...表示に10秒くらいかかる．URL色分けも時間がかかりますが，正規表現による検索文字列表示はもっとひどい．<br><br>ただ，正規表現でなければ時間がかからないこと，みくさんが用意してくれた正規表現による色分けは速度低下の原因にならないことから，マッチの度にパターンのコンパイルをやっている可能性があります．<br><br>内部のコード表現をUnicodeに統一した方が，1バイト文字利用時のメモリ効率が悪化する代わりに区切りが2バイト固定になるので文字判定が不要になって速度改善が見込まれるかな？簡単に変更できるとは思いませんが．<br></div></section>
    <ul><li><section><h1 id=1256>
    <span class="no">[1256]</span>
    <a class="thread-title" href="#1256">Re5:画面がちらつく？</a>
    <span class="author">hor</span>
    <time datetime="2002-01-21T13:10:04">2002年01月21日 13:10</time></h1>
    <div class="body">▼ げんたさん<br>&gt; 3万文字くらいの行を作ったら全然使い物にならない...表示に10秒くらいかかる．<br>&gt; URL色分けも時間がかかりますが，正規表現による検索文字列表示はもっとひどい．<br>&gt; <br>&gt; ただ，正規表現でなければ時間がかからないこと，<br>&gt; みくさんが用意してくれた正規表現による色分けは速度低下の原因にならないことから，<br>&gt; マッチの度にパターンのコンパイルをやっている可能性があります．<br><br>マッチの度にパターンをコンパイルしてるってことはないと思いますが、<br>IsSearchString周辺の実装を、RegexIsKeywordっぽく変更すれば改善しそうですね・・・</div></section>
    </li><li><section><h1 id=1258>
    <span class="no">[1258]</span>
    <a class="thread-title" href="#1258">Re4:画面がちらつく？</a>
    <span class="author">みく</span>
    <time datetime="2002-01-21T20:02:44">2002年01月21日 20:02</time></h1>
    <div class="body">&gt;発言者: げんた<br>&gt;3万文字くらいの行を作ったら全然使い物にならない...表示に10秒くらいかかる．URL色分けも時間がかかりますが，正規表現による検索文字列表示はもっとひどい．<br><br>正規表現はしかたないっす。機能に対する代償は大きいです。<br>#UNIXで使われるregexがどのくらいの性能か試してみたい気もします。<br>URLはもうちょっと高速化できるかなぁ。機会があれば試してみます。<br><br>もうひとつ思いつき。<br>CMemoryでメモリを毎回アロケートし直していますが、これをやめて<br>みたらどうでしょう。アロケートサイズを例えば８バイト単位にし<br>て、拡張・縮小を行うとか。<br><br>#define EXTEND_SIZE 8<br>SetData(char *pszNewData, int nRequestSize)<br>{<br>  if( m_nAllocSize &lt; nRequestSize<br>   || m_nAllocSize &gt; nRequestSize + EXTEND_SIZE ){<br>    Empty();<br>    m_nAllocSize = ((nRequestSize + EXTEND_SIZE) / EXTEND_SIZE) * EXTEND_SIZE;<br>    pszData = malloc(nAllocSize);<br>  }<br>  memcpy(pszData, pszNewData);<br>}<br>みたいな。<br><br>メモリ消費量は増えますが、入力するたびにメモリ解放・確保が<br>繰り返されるよりはよいと思います。<br></div></section>
    <ul><li><section><h1 id=1259>
    <span class="no">[1259]</span>
    <a class="thread-title" href="#1259">Re4:画面がちらつく？</a>
    <span class="author">みく</span>
    <time datetime="2002-01-21T21:06:13">2002年01月21日 21:06</time></h1>
    <div class="body">&gt;発言者: げんた<br>&gt;URL色分けも時間がかかりますが<br><br>非常に簡単な高速化の方法：<br>・MemCharNextはやめましょう。<br>・2箇所でIsMailAddress(, strlen(s), )としてますが、nTextLenを使えばよいです。<br>・URLキャラかどうかのテーブル(キャラクタ=配列番号)用意する。if(... || ...)の繰り返し判定はなくなる。<br></div></section>
    <ul><li><section><h1 id=1262>
    <span class="no">[1262]</span>
    <a class="thread-title" href="#1262">Re5:画面がちらつく？</a>
    <span class="author">やざき</span>
    <time datetime="2002-01-22T00:14:12">2002年01月22日 00:14</time></h1>
    <div class="body">&gt; ・MemCharNextはやめましょう。<br><br>MemCharNextで、わざわざ次の文字位置を返しているのに、<br>利用しているほうは、次の文字へのオフセットを利用しているのは<br>違和感アリます。<br><br>次の文字へのオフセット（今の文字のバイト数と一緒）を返す関数を新設してもいいかなぁ。</div></section>
    </li><li><section><h1 id=1264>
    <span class="no">[1264]</span>
    <a class="thread-title" href="#1264">Re5:画面がちらつく？</a>
    <span class="author">hor</span>
    <time datetime="2002-01-22T13:16:46">2002年01月22日 13:16</time></h1>
    <div class="body">▼ みくさん<br>[1258]<br>&gt; CMemoryでメモリを毎回アロケートし直していますが、これをやめ<br>[1259]<br>&gt; 非常に簡単な高速化の方法：<br>&gt; ・MemCharNextはやめましょう。<br>&gt; ・2箇所でIsMailAddress(, strlen(s), )としてますが、nTextLenを使えばよいです。<br>&gt; ・URLキャラかどうかのテーブル(キャラクタ=配列番号)用意する。if(... || ...)の繰り返し判定はなくなる。<br><br>少しでも改善するのならぜひ実装下さい。お願いします。</div></section>
    </li><li><section><h1 id=1296>
    <span class="no">[1296]</span>
    <a class="thread-title" href="#1296">Re4:画面がちらつく？</a>
    <span class="author">みく</span>
    <time datetime="2002-01-23T19:43:58">2002年01月23日 19:43</time></h1>
    <div class="body"><br>&gt;非常に簡単な高速化の方法：<br>&gt;・2箇所でIsMailAddress(, strlen(s), )としてますが、nTextLenを使えばよいです。<br><br>テストしてないが、とりあえずetc_uty.cpp:<br>781:if( TRUE == IsMailAddress( &amp;pszText[nURLHeadLen], nTextLen - nURLHeadLen, pnUrlLen ) ){<br>824:if( TRUE == IsMailAddress( pszText, nTextLen, pnUrlLen ) ){<br>です。1マイクロ秒くらいは速くなるんでは...<br></div></section>
    <ul><li><section><h1 id=1319>
    <span class="no">[1319]</span>
    <a class="thread-title" href="#1319">Re4:画面がちらつく？</a>
    <span class="author">みく</span>
    <time datetime="2002-01-24T23:39:14">2002年01月24日 23:39</time></h1>
    <div class="body"><br>&gt;&gt;非常に簡単な高速化の方法：<br><br>IsURLを最適化してみたら、だいたい2倍高速化できました。<br>URLとして認識するキャラクタはてきとーに直してください（速度は変わりません）。<br>ソースは IsURL.zip としてアップしておきます。<br>＃関数内constはやめましょう。必ずstatic constでってのが教訓かな。<br></div></section>
    <ul><li><section><h1 id=1325>
    <span class="no">[1325]</span>
    <a class="thread-title" href="#1325">Re5:画面がちらつく？</a>
    <span class="author">hor</span>
    <time datetime="2002-01-25T16:11:03">2002年01月25日 16:11</time></h1>
    <div class="body">▼ みくさん<br>&gt; <br>&gt; &gt;&gt;非常に簡単な高速化の方法：<br>&gt; <br>&gt; IsURLを最適化してみたら、だいたい2倍高速化できました。<br>&gt; URLとして認識するキャラクタはてきとーに直してください（速度は変わりません）。<br>&gt; ソースは IsURL.zip としてアップしておきます。<br>&gt; ＃関数内constはやめましょう。必ずstatic constでってのが教訓かな。<br><br>快適になりました！ ありがとうございます。<br><br>別件ですが、矩形複数行のDel,Cut,Pasteが恐ろしく遅かったので関連処理を見直してみました。<br>1000行くらいの矩形データをDel,Cut,Pasteすると違いがはっきり出ると思います。<br>→ RectangleEdit.lzh<br><br>ついでに記事番号[1300]のマーク復元バグの修正分も入れておきました。(忘れてしまいそうなので)</div></section>
    </li><li><section><h1 id=1327>
    <span class="no">[1327]</span>
    <a class="thread-title" href="#1327">Re4:画面がちらつく？</a>
    <span class="author">げんた</span>
    <time datetime="2002-01-25T20:07:07">2002年01月25日 20:07</time></h1>
    <div class="body">▼みくさん<br>&gt;＃関数内constはやめましょう。必ずstatic constでってのが教訓かな。<br>これの詳細説明希望．<br>関数内で #defineして後で#undefしているのと関係あるんですよね．<br></div></section>
    <ul><li><section><h1 id=1329>
    <span class="no">[1329]</span>
    <a class="thread-title" href="#1329">Re4:画面がちらつく？</a>
    <span class="author">みく</span>
    <time datetime="2002-01-25T20:45:13">2002年01月25日 20:45</time></h1>
    <div class="body">&gt;タイトル: Re4:画面がちらつく？<br>&gt;発言者: げんた<br>&gt;▼みくさん<br>&gt;&gt;＃関数内constはやめましょう。必ずstatic constでってのが教訓かな。<br>&gt;これの詳細説明希望．<br><br>試しにstaticをはずしてみると性能が2倍以上悪くなります。<br>なんか変な処理が動いているように感じます。<br>最初は気づかなくてぜんぜん速くないのでがっかりしてました。<br>推測ですが、constだけだとユーザ見えがconstなだけで関数内に<br>入ったときにデータのコピー(作成)が発生しているんではない<br>でしょうか。static const だと発生しないみたい。<br><br>あるマシンでの測定結果(10万回ループ)：<br>24秒&#9;元のIsURL関数<br>22秒&#9;最適化したIsURL関数const<br>9秒&#9;最適化したIsURL関数static const<br><br>関数内の変数宣言はスタックに割り当てられますが、<br>static付けると関数を抜けても確保されたままですよね。<br>int count(){<br>&#9;static int a = 0;<br>&#9;return ++a;<br>}<br><br><br>&gt;関数内で #defineして後で#undefしているのと関係あるんですよね．<br><br>関係ないです。<br>短いdefine名なので誤作動防止のためundefしてます。<br></div></section>
    <ul><li><section><h1 id=1331>
    <span class="no">[1331]</span>
    <a class="thread-title" href="#1331">constとstatic</a>
    <span class="author">げんた</span>
    <time datetime="2002-01-25T21:52:40">2002年01月25日 21:52</time></h1>
    <div class="body">▼みくさん<br>&gt;推測ですが、constだけだとユーザ見えがconstなだけで関数内に<br>&gt;入ったときにデータのコピー(作成)が発生しているんではない<br>&gt;でしょうか。static const だと発生しないみたい。<br><br>えーと，staticとconstは独立な概念ですよね．<br>関数内constが悪いのではなくて，static無し配列が悪いと解釈するべきだと思います．<br><br>&gt;int count(){<br>&gt;   static int a = 0;<br>&gt;   return a;<br>&gt;}<br>という関数で，aをstatic int, const int, const static intと変更してアセンブラ出力を調べてみました．<br>Borland C++を使って速度で最適化をかけた結果は以下の通りです．(長いのでコメントを削除して抜粋しています)<br><br>▼static<br>_DATA   segment dword public use32 'DATA'<br>    align   4<br>$ikofbaia   label   dword<br>    dd  0<br>_DATA   ends<br>_TEXT   segment dword public use32 'CODE'<br>@count$qv   segment virtual<br>@@count$qv  proc    near<br>?live16385@0:<br>    push      ebp<br>    mov       ebp,esp<br>    mov       eax,dword ptr [$ikofbaia]<br>    pop       ebp<br>    ret <br>@@count$qv  endp<br>@count$qv   ends<br>_TEXT   ends<br><br>* データ領域にメモリを確保してそこを参照している．<br><br>▼const<br>_DATA   segment dword public use32 'DATA'<br>_DATA   ends<br>DGROUP  group   _BSS,_DATA<br>_TEXT   segment dword public use32 'CODE'<br>@count$qv   segment virtual<br>@@count$qv  proc    near<br>?live16385@0:<br>    push      ebp<br>    mov       ebp,esp<br>    xor       eax,eax<br>    pop       ebp<br>    ret <br>@@count$qv  endp<br>@count$qv   ends<br>_TEXT   ends<br><br>* 定数と同様に扱われている．スタック上に領域は確保されない．<br><br>▼const static<br>_DATA   segment dword public use32 'DATA'<br>    align   4<br>$aoofbaia   label   dword<br>    dd  0<br>_DATA   ends<br>_TEXT   segment dword public use32 'CODE'<br>@count$qv   segment virtual<br>@@count$qv  proc    near<br>    push      ebp<br>    mov       ebp,esp<br>    xor       eax,eax<br>    pop       ebp<br>    ret <br>@@count$qv  endp<br>@count$qv   ends<br>_TEXT   ends<br><br>* 定数と同様に扱われているが，メモリ領域も確保されている．(ちょっとタコ)<br><br>以上の結果から定数のconstは使っても問題ありません．<br><br>&gt; 短いdefine名なので誤作動防止のためundefしてます。<br>というのはスコープの概念がある変数で<br><br>const char urF = 1;<br><br>と記述した方が，undefを使わなくても良い分スマートではないでしょうか．<br></div></section>
    <ul><li><section><h1 id=1332>
    <span class="no">[1332]</span>
    <a class="thread-title" href="#1332">Re:constとstatic</a>
    <span class="author">蛭子屋</span>
    <time datetime="2002-01-25T22:16:07">2002年01月25日 22:16</time></h1>
    <div class="body">▼ げんたさん<br>&gt; &gt;int count(int x){<br>&gt; &gt;   static int a = x;<br>&gt; &gt;   return a;<br>&gt; &gt;}<br><br>のstaticをconst,static constと入れ替えて試すと<br>もうちょっと違いが出るかも。</div></section>
    </li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li><li><section><h1 id=1263>
    <span class="no">[1263]</span>
    <a class="thread-title" href="#1263">Re5:画面がちらつく？</a>
    <span class="author">やざき</span>
    <time datetime="2002-01-22T00:19:52">2002年01月22日 00:19</time></h1>
    <div class="body">&gt; CMemoryでメモリを毎回アロケートし直していますが、これをやめて<br>&gt; みたらどうでしょう。<br><br>毎回Emptyして、AllocBufferして、AddDataは無駄ですよね。ここを改善するのは大いに賛成。<br></div></section>
    <ul><li><section><h1 id=1271>
    <span class="no">[1271]</span>
    <a class="thread-title" href="#1271">Re5:画面がちらつく？</a>
    <span class="author">みく</span>
    <time datetime="2002-01-22T19:07:08">2002年01月22日 19:07</time></h1>
    <div class="body">&gt;タイトル: Re5:画面がちらつく？<br>&gt;発言者: やざき<br>&gt;&gt; CMemoryでメモリを毎回アロケートし直していますが、これをやめて<br>&gt;&gt; みたらどうでしょう。<br>&gt;<br>&gt;毎回Emptyして、AllocBufferして、AddDataは無駄ですよね。ここを改善するのは大いに賛成。<br><br>ちょっと調べてみました。<br>CMemoryはバッファサイズを持っていますね。でも、有効に利用されてない。<br>Appendのときはまだよいのですが、SetDataのときには毎回解放＆確保が発生<br>してますので、ここを直すことになります。<br>あと、malloc関数は内部１６バイト単位の拡張でした(VC++6の場合)。<br>だから、１６バイト単位以下ならメモリ消費量は変わりません。<br></div></section>
    <ul><li><section><h1 id=1274>
    <span class="no">[1274]</span>
    <a class="thread-title" href="#1274">Re5:画面がちらつく？</a>
    <span class="author">みく</span>
    <time datetime="2002-01-22T20:35:50">2002年01月22日 20:35</time></h1>
    <div class="body"><br>試してみたらかえって性能が悪くなった。なんで？<br>＃もう少し調べてみます。<br><br>性能測っててわかったんですが、BorlandよりVCの<br>方が性能が10～20%良いです。<br></div></section>
    <ul><li><section><h1 id=1275>
    <span class="no">[1275]</span>
    <a class="thread-title" href="#1275">Re6:画面がちらつく？</a>
    <span class="author">やざき</span>
    <time datetime="2002-01-22T20:54:40">2002年01月22日 20:54</time></h1>
    <div class="body">▼ みくさん<br>&gt; <br>&gt; 試してみたらかえって性能が悪くなった。なんで？<br>&gt; ＃もう少し調べてみます。<br>&gt; <br>&gt; 性能測っててわかったんですが、BorlandよりVCの<br>&gt; 方が性能が10～20%良いです。<br><br>よろしくお願いします。期待してます。</div></section>
    </li><li><section><h1 id=1279>
    <span class="no">[1279]</span>
    <a class="thread-title" href="#1279">Re5:画面がちらつく？</a>
    <span class="author">みく</span>
    <time datetime="2002-01-22T22:52:37">2002年01月22日 22:52</time></h1>
    <div class="body"><br>BSキーで文字削除をしたときに５～１０％くらい性能が<br>よくなるくらいで、DELキーでの削除、文字入力などは<br>変化なしでした。拡張単位を大きくするとかえって遅く<br>なったり。。。mallocは以外に速いということで、終わ<br>りにします。<br>＃理論的には速くなるんだけどねぇ。<br><br>他の怪しいところ：<br>描画系のほうに時間のほとんどを費やしていそうな気がしてきました。<br>ルーラーのちらつきがあるので、タイトルみたいに毎回再描画してるみたい。<br>ペンとかブラシを毎回Create/Deleteするのはどんなものか。<br></div></section>
    <ul><li><section><h1 id=1280>
    <span class="no">[1280]</span>
    <a class="thread-title" href="#1280">Re6:画面がちらつく？</a>
    <span class="author">やざき</span>
    <time datetime="2002-01-22T23:43:41">2002年01月22日 23:43</time></h1>
    <div class="body">▼ みくさん<br>&gt; <br>&gt; BSキーで文字削除をしたときに５～１０％くらい性能が<br>&gt; よくなるくらいで、DELキーでの削除、文字入力などは<br>&gt; 変化なしでした。拡張単位を大きくするとかえって遅く<br>&gt; なったり。。。mallocは以外に速いということで、終わ<br>&gt; りにします。<br>&gt; ＃理論的には速くなるんだけどねぇ。<br><br>おお。そうなんですね。<br>若干でも早くなるなら取り込みましょうよ。<br><br> <br>&gt; 他の怪しいところ：<br>&gt; 描画系のほうに時間のほとんどを費やしていそうな気がしてきました。<br>&gt; ルーラーのちらつきがあるので、タイトルみたいに毎回再描画してるみたい。<br>&gt; ペンとかブラシを毎回Create/Deleteするのはどんなものか。<br><br>描画系は、ExtTextOutに、必要最低限の描画をさせられればもっとはやくなるかなぁと思います。<br>いま、ExtTextOutにクリッピングさせてますが、自前でもっている情報だけでできるかぎりクリッピングしたらいいんじゃないかなぁ。<br>と思って、挫折してます。結構大きいと思うんですけど、どんなもんか確認はしてません～。<br></div></section>
    <ul><li><section><h1 id=1297>
    <span class="no">[1297]</span>
    <a class="thread-title" href="#1297">Re6:画面がちらつく？</a>
    <span class="author">みく</span>
    <time datetime="2002-01-23T19:43:59">2002年01月23日 19:43</time></h1>
    <div class="body"><br>&gt;おお。そうなんですね。<br>&gt;若干でも早くなるなら取り込みましょうよ。<br><br>とりあえずテスト版を cmemory.zip として置いておきました。<br>リリース版には入れないでね。<br>＃どのくらいの性能か調べてみてください。<br></div></section>
    <ul><li><section><h1 id=1309>
    <span class="no">[1309]</span>
    <a class="thread-title" href="#1309">Re7:画面がちらつく？</a>
    <span class="author">あろか</span>
    <time datetime="2002-01-24T01:55:51">2002年01月24日 01:55</time></h1>
    <div class="body">▼ みくさん<br>[1297] <br>&gt; とりあえずテスト版を cmemory.zip として置いておきました。<br>&gt; リリース版には入れないでね。<br>ReNewBufferとAllocBufferっておなじことしてませんか？<br>AllocBufferはEmpty呼ばなくてもよい？<br><br>[1274]<br>&gt; 性能測っててわかったんですが、BorlandよりVCの<br>&gt; 方が性能が10～20%良いです。<br>質問１：VCのDebugビルドだとどんな具合ですか？<br>質問２：BCCは特にどんな操作で遅いのでしょう？<br></div></section>
    <ul><li><section><h1 id=1317>
    <span class="no">[1317]</span>
    <a class="thread-title" href="#1317">Re7:画面がちらつく？</a>
    <span class="author">みく</span>
    <time datetime="2002-01-24T23:39:12">2002年01月24日 23:39</time></h1>
    <div class="body"><br>AllocBuffer<br>　未確保なら確保する。→malloc<br>　確保済みだが領域不足なら拡張する。→realloc<br>　過去のデータは保持される。<br>ReNewBuffer<br>　未確保なら確保する。→malloc<br>　確保済みだが新しく必要な領域が少し減少するくらいならそのまま使う。<br>　領域サイズが不足するか大きく減少するなら再割り当てを行う。→free/malloc<br>　過去のデータは保持されない。<br><br>Borland使わないのでわからないんですがBorlandでは実行速度で最適化されてますか。<br></div></section>
    <ul><li><section><h1 id=1320>
    <span class="no">[1320]</span>
    <a class="thread-title" href="#1320">Re8:画面がちらつく？</a>
    <span class="author">あろか</span>
    <time datetime="2002-01-25T01:02:20">2002年01月25日 01:02</time></h1>
    <div class="body">▼ みくさん<br>&gt; <br>&gt; AllocBuffer<br>&gt; 　未確保なら確保する。→malloc<br>&gt; 　確保済みだが領域不足なら拡張する。→realloc<br>&gt; 　過去のデータは保持される。<br>&gt; ReNewBuffer<br>&gt; 　未確保なら確保する。→malloc<br>&gt; 　確保済みだが新しく必要な領域が少し減少するくらいならそのまま使う。<br>&gt; 　領域サイズが不足するか大きく減少するなら再割り当てを行う。→free/malloc<br>&gt; 　過去のデータは保持されない。<br>よくわかりました。ありがとうございます。<br>で、提案です。<br>１＋ReNewBufferのサイズ計算がけっこう複雑ですが、大抵の場合キー入力して近いうち大きくすることが判っているのでもっと大雑把な計算でもよいのでは？<br>２＋Empty() の代わりに m_nDataBufSize=0; で AllocBuffer しては？<br><br>&gt; Borland使わないのでわからないんですがBorlandでは実行速度で最適化されてますか。<br>よくわからないで設定してました。今ヘルプを見たら「サイズで最適化」だそうです。<br>そのくせVC(お試し版)より少し大きいですね。<br></div></section>
    <ul><li><section><h1 id=1355>
    <span class="no">[1355]</span>
    <a class="thread-title" href="#1355">Re9:画面がちらつく？</a>
    <span class="author">あろか</span>
    <time datetime="2002-01-27T01:44:52">2002年01月27日 01:44</time></h1>
    <div class="body">▼ あろかさん<br>&gt; ２＋Empty() の代わりに m_nDataBufSize=0; で AllocBuffer しては？<br>まちがえました。これじゃメモリリークしますね。<br>*m_pData=0 ならいいのかな。</div></section>
    </li></ul></li></ul></li></ul></li><li><section><h1 id=1314>
    <span class="no">[1314]</span>
    <a class="thread-title" href="#1314">Re7:画面がちらつく？</a>
    <span class="author">やざき</span>
    <time datetime="2002-01-24T11:51:41">2002年01月24日 11:51</time></h1>
    <div class="body">▼ みくさん<br>&gt; <br>&gt; &gt;おお。そうなんですね。<br>&gt; &gt;若干でも早くなるなら取り込みましょうよ。<br>&gt; <br>&gt; とりあえずテスト版を cmemory.zip として置いておきました。<br>&gt; リリース版には入れないでね。<br>&gt; ＃どのくらいの性能か調べてみてください。<br><br>客観的に性能を調べる術ってありますか？<br>自分でもfreeしないようにSetDataを書き直してみたんだけど、性能を調べたいんです。<br>＃なんか自分のほうが遅いような気もする。</div></section>
    <ul><li><section><h1 id=1318>
    <span class="no">[1318]</span>
    <a class="thread-title" href="#1318">Re7:画面がちらつく？</a>
    <span class="author">みく</span>
    <time datetime="2002-01-24T23:39:13">2002年01月24日 23:39</time></h1>
    <div class="body"><br>使用しているマシンに依存するから断言はできないですが。<br>私は素の状態のsakura.exeを起動してストップウォッチで30秒or60秒を測り、<br>以下のような操作を行いました。<br>・文字キーを押しっぱなし<br>・1000桁くらい入力しておいてDELを押しっぱなし<br>・1000桁くらい入力しておいてBSを押しっぱなし<br>・改行キーを押しっぱなし<br>で、一定時間で何文字・何行くらいになるかを調べる。<br>あとは、置換数の多いファイルで全置換(削除・挿入の繰り返しのはず)に何秒かかるかとか。<br><br>ソースを見て思ったのは削除・挿入時にいったんメモリを別に確保して<br>そちらにコピーし、最後にCMemoryにSetDataSzしていること。<br>この辺をCMemoryにやらせればメモリ転送が減るような気が...<br></div></section>
    </li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></body></html>